.. _cmcSxGetCorrection: cmcSxGetCorrection ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmcSxGetCorrection([in] VT_I4 BoardID, [in] VT_I4 Axis, [in] VT_I4 CorrMode, [in] VT_R8 CorrAmount, [in] VT_R8 CorrVel, [in] VT_I4 CntrMask) DESCRIPTION ````````````` - cmcSxGetCorrection() 함수는 백래쉬/슬립 보정에 대한 현재 설정값을 읽어들이는 함수입니다. \ - 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cmc 가 붙지 않습니다. PARAMETER ````````````` ▶ BoardID: 사용자가 설정한 디바이스(보드) ID. ▶ Axis: Axis 번호(축 번호가 3부터 시작됩니다.). ▶ CorrMode : cmcSxGetCorrection함수의 인자이며, 반환값은 다음과 같습니다. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 BIT No., Meaning 0 (cmcCORR_DISABLE), 보정기능을 비활성화합니다. 1 (cmcCORR_BACKLASH), 보정모드를 백래쉬 보정모드로 설정합니다. 2 (cmcCORR_SLIP), 보정모드를 슬립 보정모드로 설정합니다. ▶ CorrAmount : cmcSxGetCorrection 함수의 인자이며, 보정 펄스의 수를 반환합니다. ▶ CorrVel : cmcSxGetCorrection 함수의 인자이며, 보정펄스의 주파수를 반환합니다. ▶ CntrMask : cmcSxGetCorrection 함수의 인자이며, 보정펄스가 출력되는 동안에 각 카운터의 동작여부를 비트별로 반환합니다. 각 비트가 나타내는 값은 아래 표를 참고 하십시오. .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 Value, Meaning BIT0, 1: 보정펄스 출력시에 Command Counter 가 동작하는 모드입니다. BIT1, 1 : 보정펄스 출력시에 Feedback Counter가 동작하는 모드입니다. BIT2, 1 : 보정펄스 출력시에 Deviation Counter가 동작하는 모드입니다. BIT3, 1 : 보정펄스 출력시에 General Counter가 동작하는 모드입니다. RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | 음수 | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ EXAMPLE ````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ long BoardID = 0; 다음의 예제는 백래쉬 보정을 적용할 때의 동작에 대한 설명입니다. 본 예에서는 “Unit distance”와 “Unit speed”가 각각 1로 설정되었음을 가정합니다. // 백래쉬보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) // cmcSxGetCorrection (BoardID, 3, cmCORR_BACK, 1000, 1000, 0x0); //////////////////////////////////////////////////////////////// // 이전에 (-)방향 이동을 수행하였다면 아래에서 백래쉬 보정을 수행합니다. // 1000 PPS의 속도로 (+)1000펄스를 출력한 후에 지정한 SxMove()가 수행됩니다. cmcSxMove(BoardID, 3, 10000); // 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다. cmcSxMove(BoardID, 3, 10000); // 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다. cmcSxMove(BoardID, 3, 10000); //////////////////////////////////////////////////////////////// // 이동방향이 전환되므로 아래에서 백래쉬 보정을 수행합니다. 1000 PPS의 속도로 ( )1000 펄스를 출력한 // 후에 지정한 SxMove()가 수행됩니다. cmcSxMove(BoardID, 3, -10000); // 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다. cmcSxMove(BoardID, 3, -10000); .. code-block:: c++ :linenos: Visual Basic '다음의 예제는 백래쉬 보정을 적용할 때의 동작에 대한 설명입니다. '본 예에서는 "Unit distance"와 "Unit speed"가 각각 1로 설정되었음을 가정합니다. „BoardID 는 0으로 가정합니다. '// 백래쉬보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) Call SxSetCorrection(BoardID, 3, cmcCORR_BACK, 1000, 1000, 0) '/////////////////////////////////////////////////////////////// '// 이전에 (-)방향 이동을 수행하였다면 아래에서 백래쉬 보정을 수행합니다. '// 1000 PPS의 속도로 (+)1000펄스를 출력한 후에 지정한 SxMove()가 ‘// 수행됩니다. Call SxMove(BoardID, 3, 10000) '// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다. Call SxMove(BoardID, 3, 10000) '// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다. Call SxMove(BoardID, 3, 10000) '/////////////////////////////////////////////////////////////// '// 이동방향이 전환되므로 아래에서 백래쉬 보정을 수행합니다. 1000 PPS의 '속도로(-)1000펄스를 출력한 후에 지정한 SxMove()가 수행됩니다. Call SxMove(BoardID, 3, -10000) '// 이동방향이 이전과 동일하므로 아래에서는 백래쉬보정을 하지 않습니다. Call SxMove(BoardID, 3, -10000) EXAMPLE2 ``````````` - 다음의 예제는 슬립보정을 적용할 때의 동작에 대한 설명입니다. 본 예에서는 “Unit distance”와 “Unit speed”가 각각 1 로 설정되었음을 가정합니다. .. code-block:: c++ :linenos: C/C++ //BoardID는 0으로 가정합니다. // 슬립보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) // // (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 cmcSxMove(BoardID, 3, 10000); // (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 cmcSxMove(BoardID, 3, 10000); // (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 cmcSxMove(BoardID, 3, -10000); // (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 cmcSxMove(BoardID, 3, -10000); .. code-block:: c++ :linenos: Visual Basic „BoardID 는 0으로 가정합니다. '// 슬립보정 모드로 설정 (보정펄스수:1000, 보정펄스출력속도:1000 PPS) Call cmcSxGetCorrection(BoardID, 3, cmCORR_SLIP, 1000, 1000, 0) '// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 Call cmcSxMove(BoardID, 3, 10000) '// (+)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 Call cmcSxMove(BoardID, 3, 10000) '// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 Call cmcSxMove(BoardID, 3, -10000) '// (-)1000 펄스의 보정펄스가 출력된 후에 SxMove()가 수행됩니다 Call cmcSxMove(BoardID, 3, -10000)